package com.cskaoyan._02interface._02basic;

/**
 * @description:
 * @author: 景天
 * @date: 2023/2/11 10:52
 **/
/*
接口的特点:
1. 接口的声明特点
   1. 接口能不能创建对象?--->NO
   2. 接口能不能用final修饰?--->NO
2. 接口的实现类的书写格式
    命名:
        接口的命名 习惯以IXxx 大驼峰
        接口实现类的命名: 习惯于接口名Impl
    定义了一个接口, 某个类实现这个接口的时候有些要求
        在定义接口的位置,新建一个包 impl,里面写接口的实现类
        或者在接口的位置,直接写实现类
3. 成员特点
   1. 能否定义属性(成员变量, 静态成员变量, 全局常量)?
        默认是public static final ---> 都是全局常量
        隐藏的单词不用写出来
   2. 能否定义方法/行为?
        普通方法默认都是public abstract抽象方法
        隐藏的单词不用写出来
        可以有静态方法,但是一般不用

4. 构造器---->NO
5. 代码块---->NO

小结:
    接口的特点:
         接口里可以定义全局常量,静态方法,抽象方法
        大多数情况下,接口里面只放抽象方法,比如Closeable,Runnable,Callable
        特殊情况下,接口里不放任何东西比如Cloneable,Serializable,表示是一个空接口,起到标记的作用

注意:
1. 实现接口的类，如果没有明确继承一个其他类，
那么子类对象的隐式初始化super()指向Object类。
2. 接口虽然不是类，但是它也继承了Object类。
 */
public class Demo {
    public static void main(String[] args) {
        // 'IA' is abstract; cannot be instantiated
        // 不能创建对象
        // IA ia = new IA();
    }
}

interface IA{
    int a =1;
    // 全局常量必须初始化.显式赋值
    // int d ;
    //static int b =1;
    //static final int c =1;
    //public static final int d =1;

    // 没有构造代码块
    // {}
    // 没有代码块
    //static {}


    // 定义普通方法
    //public abstract void m1();
    void m2();

    static String m3() {
        return "123";
    }
}